*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*
*                                                                   *
*     EXPLICATION ET ASTUCES POUR UTILISER L'INIT DE PROGRAMMES     *
*                                                                   *
*                                                                   *
* Par son programmeur : Skynet/Fatal-Design                         *
* Le 16/03/95                                                       *
*                                                                   *
*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*
* Ctc moi pour d'eventuels bugs, commentaires et ides a :          *
* Abstract                                                          *
* 72,rue du Dauphin                                                *
* 69003 Lyon                                                        *
*                                                                   *
* Compuserve, iD : 100620,2673                                      *
*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*

Info de derniere minute : 
Argh, je crois que g oublie de corriger un tit bug dans ce fichier,
mais ca date de tellement loin que je m'en souvient plus. Si vous le
trouvez, faites moi signe...

C'est bon, je pense que cette fois elle est bien termine cette Init !!!
Bon, il reste encore quelques problemes dans le Debug_Mode pour ce qui
est d'intercepter les erreurs bus et adresses, mais je vais dtrailler
ca plus loin.

Historique et BlaBla :
----------------------
D'abord je tiens  dire que pour moi, ce qu'il y a de plus chiant et
de plus important c'est de coder une bonne Init qui ne plante pas.
Je tiens dans un premier temps  remercier mon Simplus pour s'etre
pris la tete  ma place en faisant une init pratique qui ne plantait
pas et que j'ai utilis pendant pas mal de temps !

Pourquoi c'est chiant de coder une Init ??? Ben parcequ'il faut penser
 TOUT et que les docs sur Falcon sont assez merdiques dans le sens ou
elles ne sont pas compltes (Kit Dev) et meme bugges (Kit dev et
Compendium). Donc c'est pas de la tarte!
Pourquoi c'est le plus important ??? Ben parceque vous allez vous en
servir TOUT le temps et que si votre Init est mauvaise, vous serez
moins efficace et vous allez perdre pas mal de temps (et votre courage).


Donc pour tout les dbutants qui comptent se mettre  l'assembleur et
pour tout ceux qui codes dja sur Falcon, je vous lgue mon Init en
esprant qu'elle vous servira beaucoup et que vous en ferez le meilleur
usage.


Caractristiques :
------------------
 - Init EXCLUSIVEMENT pour Falcon 030
 - Sert pour les programmes de type Gem ou Tos, mais labore avant tout
   pour raliser des codes de type Dmo.
 - Compatible avec quasiment tout les PRG utiles qui servent  amliorer
   votre confort. (Dans le genre, vous pouvez developper en 800*600 avec
   NVDI, Let 'em Fly et le MegaPlayer sans que tout vous explose  la
   gueule quand vous reven sous Devpac).
 - Contient une grande librairie de choix de rsolutions RVB/VGA fait par
   Simplus. (Voir fin du fichier Init_Sys.S)

Options :
---------
 - Start Up pour les programmes de types Gem (Libration de la 
   mmoire inutilise)
 - Activation/Dsactivation de la souris et/ou du joystick
 - Activation/Dsactivation du cache de donn et/ou d'instruction
 - Routine de clavier sous interruption avec Gestion des touches ShiftL/R,
   Control, Alternate, CapsLock, convertion d'un ScanCode d'une touche en
   sa valeur ASCII (plus besoin de table !)
 - Priorite Total  la sortie du programme, ce qui dtourne les boucles
   infinies ou xecution chaotique du code du  un branchement foireux.
   Cette option ne marche pas en Debug_Mode (MonSt n'aime pas les inter),
   et la routine de Gestion du Clavier doit etre sous Inter.
 - xecution d'un programme DSP (l'Init DSP est fournie aussi)
 - Dtournement des erreurs de type Host dues  une movaise communication
   entre les deux processeurs. (Retour au bout de 1seconde)
 - Mode protg qui dtourne et localise toutes les erreurs 030 qui engendres
   une exception (divs par 0, erreur bus/adr, violation de privilge, erreur
   de format, instruction illgale, Etc...)
 - Mode debug qui permet de tracer votre code sous Monst le plus facilement
   possible et en liminant les petits trucs qui plantent sous monst (pas
   totalement, dsol). Par exemple, coupe et dtourne les interruptions.


Utilisation :
-------------
1) Inventaire.
Vous devez avoir quatres fichiers aux noms de :
 - Init_Use.TXT : vous etes en train de le lire.
 - Init_1.S     : Base de l'init, vous devez la copier  chaques nouveaux PRG.
 - Init_Sys.S   : Noyau de l'init, qui intervient sous forme d'Include dans
                  Init_1.S. Il n'a pas besoin d'etre modifi.
 - Init_1.ASM   : Init pour programmes en ASM 56001

2) Mode d'emploi.
A chaque nouveaux code, il vous suffit juste de dupliquer le fichier Init_1.S
et Init_1.ASM (Si votre PRG utilise le DSP) et de renommer ce(s) fichier(s)
afin de toujours garder les fichiers de base. Init_Sys.S n'a pas besoin d'etre
dupliquer car vous n'avez pas besoin de le modifier.
tapes  suivres :
 - Configurez les options  votre convenence
 - N'oubliez pas de configurer correctement la taille de l'cran (Screen_Size)
   en fonction de la rsolution adopte. Si vous ne devez pas installer une
   nouvelle rsolution, n'xecutez pas la routine Set_Res (Lignes 75-77).
   Si vous ne devez pas installer un ou plusieurs crans, configurez
   Screen_Size  0, et n'xecutez pas la routine Instal_Screens (Lignes 78-68).
 - Si vous changez de rsolution, la liste des rsolutions disponibles se
   trouve dans le fichier Init_Sys.S  partir de la ligne 925.
 - La partie linaire du code (Inits spcifiques, programme linaire etc..)
   doit se trouver dans la routine Specials_Inits (ligne 140)
 - Les routines qui doivent etre xecutes  chaques VBL doivent etre dans la
   routine VBL (ligne 146) (Attention, routine sous interruption, il faut 
   sauvegarder les registres que vous allez utliser).
 - Les routines qui doivent etre synchro avec la VBL doivent se trouver dans la
   routine Main_Synchro (ligne 177)
 - Les donnes doivent figurer en Section DATA (ligne 202)
 - La zone BSS en section BSS (ligne 215)
 
   
Astuces&Imperfections :
-----------------------
Pour debugger sans se prendre la tete sous MonSt
- Etre en mode Debug_Mode
- Sous MonSt, effectuez en premier un Trace (Ctrl-Z), puis un Trace Into
  (Ctrl-A), ce qui  pour effet d'xecuter les inits systems.
- Apres xecutez les routine Set_Res et Instal_Screens en Trace Into, et vous
  voila en plein sur votre code en un rien de temps
- Pour revenir sous Devpac, n'oubliez pas de quitter MonSt apres avoir xecut
  Restore_System. Pour cela, effectuer un Alt-R, PC=Restore_It (puis entre)
  et enfin un Ctrl-A pour xecuter d'un bloc la routine de restoration.

Mode Protection
Lorsque le mode protection intercepte une erreur, il la localise en relatif par
rapport au symbole START, donc quand vous avez une erreur de type Y  l'offset
xxxx, aller sous MonSt, et recherchez l'instruction en faisant :
  Alt-A, Start+\xxxx (entre), vous tomb sur l'instruction qui suit celle qui
a provoque l'erreur, donc revenez d'un cran en arrire.

Ce mode n'est pas sure a 100%, il y a encore quelques problemes pour le
dtournement de certaines erreurs Bus/Adr. Certaines de ces erreurs sont
provoques lors d'une criture dans une zone interdite, vous avez donc due
craser des donnes vitales, dans ce genre de cas, le Reset s'impose !!!

Voila, c'est  peu prs tout, si vous avez des suggestions, Bugs Report (on ne
sait jamais), ou si vous voulez me contacter pour tout autres raison, pas de
problemes, mon adresse est quelque part dans ces fichiers.


Skynet Greetz to: Simplet, Haltero, Zack, Bls, Slaine,Saturne (Demomaker,GenST)
Cyberline (Bitmaps, MC Gee, Ranma1/2), Dune (Evil Metal), NLC (BB Fuck, Swamp)
BenJ, Bill RDT Crew, Binaris (DM violator, Megar), Adrenaline, Hydroxid (Nytrik
Artoax), Positivity, MJJ, Atlantide, etc...



